import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Naves que disparan objetos BalasEnemigo
 * 
 * @author Luis Guajardo Olvera
 * @author Daniel Romero Martí
 */
public class Caza extends Enemigo
{
    private GreenfootImage [] arreglo;
    private int cosa;
    private int num;
    private int cant;
    private int tiempoDisparo;
    
    /**
     * Constructor de la clase Caza
     */
    public Caza()
    {
        super.aumentaTam(8);
        super.profundidad(0);
        cosa=0;
        num = 2;
        tiempoDisparo=0;
        arreglo= new GreenfootImage[10];
        for(int i=0;i<10;i++)
            arreglo[i] = new GreenfootImage("interceptor"+i+".png");

    }

    /**
     * Act - do whatever the Caza wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        if(num!=20 && num!=30 && num!=40 && num!=50)
        {  num = Greenfoot.getRandomNumber(100);
            cant = Greenfoot.getRandomNumber(20);
        }

        mueve();
        if(num<=80 && num>=60 && (tiempoDisparo%5==0))
        {
            super.act();
            tiempoDisparo=0;
        }
        else
            tiempoDisparo++;

        if(cosa==cant)
        {
            num=2;
            cosa=0;   
        }
        if(super.aumentaTam()==10 &&super.profundidad()!=10)
        {  setImage(arreglo[super.profundidad()]);
            super.aumentaTam(0);
            int prof = super.profundidad();
            super.profundidad(prof+1);
        }
        if(super.aumentaTam() <10)
        {
            int tam = super.aumentaTam();
            super.aumentaTam(tam+1);
        }
        desaparece();
    }   

    /**
     * Método que le da un movimiento aleatorio al objeto, hacia las direcciones izquierda, derecha, arriba y abajo
     */
    public void mueve()
    {  World mundo;
        mundo=getWorld();
        if(num==20 && cant!=0)
        { if(getX()>0)
                this.mueveIzq();
            else
                num=30;
        }
        if(num==30 && cant!=0)
        { if(getX()<mundo.getWidth())
                this.mueveDer();
            else
                num=20;
        }
        if(num==40 && cant!=0)
        {  if(getY()>=0)
                this.mueveArr();
            else
                num=50;
        }
        if(num==50 && cant!=0)
        { if(getY()<mundo.getHeight())
                this.mueveAba();
            else
                num=40;
        }
    }
    
    /**
     * Método que cambia la posición del objeto hacia arriba
     */
    public void mueveArr()
    {
        setLocation(getX(),getY()-10);
        cosa++;
    }

    /**
     * Método que cambia la posición del objeto hacia abajo
     */
    public void mueveAba()
    {
        setLocation(getX(),getY()+5);
        cosa++;
    }

    /**
     * Método que cambia la posición del objeto hacia la izquierda
     */
    public void mueveIzq()
    {
        setLocation(getX()-5,getY());
        cosa++;
    }

    /**
     * Método que cambia la posición del objeto hacia la derecha
     */
    public void mueveDer()
    { 
        setLocation(getX()+5,getY());
        cosa++;
    }

    /**
     * Método que crea Balas enemigas para que ataquen a la nave StarFox
     */
    public void ataca()
    {
        BalasEnemigo bala;
        World mundo;
        int x,y;
        x=getX();
        y=getY();
        mundo=getWorld();
        bala = new BalasEnemigo(4);
        mundo.addObject(bala,x,y+30);
    }
}
